d851ecdab3f654cb28a535f70f23211b45473d9f,python/src/com/jetbrains/python/codeInsight/PyCodeBlockProvider.java,PyCodeBlockProvider,getCodeBlockRange,#Editor#PsiFile#,20

Before Change


        if (caretOffset == statement.getTextRange().getStartOffset()) {
          final PyStatement statementAbove = PsiTreeUtil.getParentOfType(statement, PyStatement.class);
          if (statementAbove != null) {
            return new TextRange(statementAbove.getTextRange().getStartOffset(), statement.getTextRange().getEndOffset());
          }
        }
        return statement.getTextRange();

After Change


      if (statement != null) {
        // if we're in the beginning of the statement already, pressing Ctrl-[ again should move the caret one statement higher
        final int statementStart = statement.getTextRange().getStartOffset();
        int statementEnd = statement.getTextRange().getEndOffset();
        while (statementEnd > statementStart && psiFile.findElementAt(statementEnd) instanceof PsiWhiteSpace) {
          statementEnd--;
        }
        if (caretOffset == statementStart || caretOffset == statementEnd) {